import streamlit as st
import requests
import json

# 设置页面配置
st.set_page_config(
    page_title="小红书文案生成工具",
    page_icon="📝",
    layout="wide"
)

# 页面标题
st.title("🌟 小红书文案生成工具")
st.markdown("---")

# 侧边栏配置
st.sidebar.header("⚙️ 生成设置")

# API密钥输入
api_key = st.sidebar.text_input("DeepSeek API密钥", type="password")

model = st.sidebar.selectbox(
    "选择模型",
    ["deepseek-chat", "deepseek-coder"]
)
temperature = st.sidebar.slider("创意度", 0.0, 1.0, 0.7)
max_tokens = st.sidebar.slider("最大生成长度", 100, 2000, 800)

# 主界面输入区
st.subheader("📋 输入产品/主题信息")
product_name = st.text_input("产品/主题名称")
product_description = st.text_area("产品/主题详细描述", height=150)
target_audience = st.text_input("目标受众", "90后女性")
content_style = st.selectbox(
    "文案风格",
    ["轻松活泼", "专业严谨", "情感共鸣", "故事化", "幽默风趣"]
)
include_hashtags = st.checkbox("包含话题标签", value=True)
include_emojis = st.checkbox("添加表情符号", value=True)

# 生成按钮
if st.button("✨ 生成小红书文案"):
    if not api_key:
        st.error("请输入DeepSeek API密钥")
    elif not product_name or not product_description:
        st.error("请填写产品/主题名称和描述")
    else:
        with st.spinner("正在生成文案，请稍候..."):
            try:
                # 构建提示词
                prompt = f"""
                请你扮演一位专业的小红书内容创作者，为以下产品/主题创作一篇吸引人的小红书文案：
                
                产品/主题名称：{product_name}
                产品/主题描述：{product_description}
                目标受众：{target_audience}
                文案风格：{content_style}
                
                要求：
                1. 文案应包含吸引人的标题，使用emoji增强表现力
                2. 正文内容生动有趣，突出产品/主题的核心卖点和优势
                3. 使用小红书常见的排版格式，如分段、序号、emoji等
                4. 文案长度适中，便于阅读
                {("5. 在文末添加3-5个相关话题标签" if include_hashtags else "")}
                {("6. 适当使用emoji增强表现力" if include_emojis else "")}
                
                请直接给出完整文案，不需要解释你的创作过程。
                """
                
                # 调用DeepSeek API
                headers = {
                    "Content-Type": "application/json",
                    "Authorization": f"Bearer {api_key}"
                }
                
                payload = {
                    "model": model,
                    "messages": [
                        {"role": "user", "content": prompt}
                    ],
                    "temperature": temperature,
                    "max_tokens": max_tokens
                }
                
                response = requests.post(
                    "https://api.deepseek.com/v1/chat/completions",
                    headers=headers,
                    data=json.dumps(payload)
                )
                
                if response.status_code == 200:
                    result = response.json()
                    generated_text = result["choices"][0]["message"]["content"]
                    
                    # 显示生成的文案
                    st.subheader("✅ 生成的小红书文案")
                    st.markdown("---")
                    st.markdown(generated_text)
                    
                    # 提供复制按钮
                    st.text_area("复制文案", generated_text, height=300)
                    
                else:
                    st.error(f"API请求失败: {response.status_code}")
                    st.json(response.json())
            
            except Exception as e:
                st.error(f"发生错误: {str(e)}")

# 页脚
st.markdown("---")
st.markdown("💡 提示：调整侧边栏的参数可以控制生成文案的创意度和长度")
st.markdown("⚠️ 注意：您的API密钥仅在当前会话中使用，不会被保存")
